import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;



class User{
    public int userId;
    public int classId;
}

//如果post请求body中是 json格式！就需要通过第三方库 Jackson 来获取里面的数据
@WebServlet("/postJson")
public class PostJsonServlet extends HttpServlet {
    //1.创建 Jackson 的核心对象
    private ObjectMapper objectMapper = new ObjectMapper();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //2.读取body中的请求，使用 objectMapper 来解析成需要的对象
      //readValue：将 json格式的字符串转换成 java的对象
      //第一个参数：对哪个字符串转换(形如：{"userId":"123","classId":"456"})，//第二个参数：转换成哪个 java 对象(根据键值对里的key与user类里面的属性进行对比，看是否匹配，
      //如果匹配就将此key对应的value赋值给此时的属性，同时进行类型转换。不匹配就跳过，进行下一个key）
        User user = objectMapper.readValue(req.getInputStream(),User.class);//通过反射可以拿到这个类对象，获取里面所以的属性

        resp.getWriter().write("userId:" + user.userId + ", classId:" + user.classId);
    }
}
